[INFO] cloning repository https://github.com/thomasetter/crdt_splice
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/thomasetter/crdt_splice" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthomasetter%2Fcrdt_splice", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthomasetter%2Fcrdt_splice'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 39ded84a1d661c877a034cd7f8478e9288fea6e3
[INFO] fixing thomasetter/crdt_splice against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fthomasetter%2Fcrdt_splice" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/thomasetter/crdt_splice
[INFO] finished tweaking git repo https://github.com/thomasetter/crdt_splice
[INFO] tweaked toml for git repo https://github.com/thomasetter/crdt_splice written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/thomasetter/crdt_splice on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/thomasetter/crdt_splice already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded log v0.4.11
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3
[INFO] running `Command { std: "docker" "start" "a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]    Compiling log v0.4.11
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking crdt_splice v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/main.rs from 2018 edition to 2021
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.74s
[INFO] [stderr] crater-edition-check: crdt_splice v0.1.0 (/opt/rustwide/workdir) updating edition from 2018 to 2021
[INFO] [stderr]     Checking crdt_splice v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `self_offset_after`
[INFO] [stdout]    --> src/main.rs:276:33
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     if let Some(self_offset_after) = self_offset_after {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_self_offset_after`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut result = vec![TextNode::Text {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/main.rs:411:21
[INFO] [stdout]     |
[INFO] [stdout] 411 |                     node,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `node: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/main.rs:412:21
[INFO] [stdout]     |
[INFO] [stdout] 412 |                     offset,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `offset: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset_after`
[INFO] [stdout]    --> src/main.rs:413:21
[INFO] [stdout]     |
[INFO] [stdout] 413 |                     offset_after,
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: try ignoring the field: `offset_after: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text`
[INFO] [stdout]    --> src/main.rs:414:21
[INFO] [stdout]     |
[INFO] [stdout] 414 |                     text,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `text: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `self_offset_after`
[INFO] [stdout]    --> src/main.rs:276:33
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     if let Some(self_offset_after) = self_offset_after {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_self_offset_after`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut result = vec![TextNode::Text {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_nodes_len`
[INFO] [stdout]    --> src/main.rs:588:17
[INFO] [stdout]     |
[INFO] [stdout] 588 |             let text_nodes_len = p.contents().len();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_nodes_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/main.rs:411:21
[INFO] [stdout]     |
[INFO] [stdout] 411 |                     node,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `node: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/main.rs:412:21
[INFO] [stdout]     |
[INFO] [stdout] 412 |                     offset,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `offset: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset_after`
[INFO] [stdout]    --> src/main.rs:413:21
[INFO] [stdout]     |
[INFO] [stdout] 413 |                     offset_after,
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: try ignoring the field: `offset_after: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text`
[INFO] [stdout]    --> src/main.rs:414:21
[INFO] [stdout]     |
[INFO] [stdout] 414 |                     text,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `text: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `anchor`
[INFO] [stdout]     --> src/main.rs:1031:39
[INFO] [stdout]      |
[INFO] [stdout] 1031 |     fn find_mutable<'a>(&'a mut self, anchor: TextOrParagraphAnchor) -> DocumentStateMutIter<'a> {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_anchor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_nodes_len`
[INFO] [stdout]    --> src/main.rs:588:17
[INFO] [stdout]     |
[INFO] [stdout] 588 |             let text_nodes_len = p.contents().len();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_nodes_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin_anchor`
[INFO] [stdout]     --> src/main.rs:1200:21
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                     begin_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^^^ help: try ignoring the field: `begin_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_anchor`
[INFO] [stdout]     --> src/main.rs:1201:21
[INFO] [stdout]      |
[INFO] [stdout] 1201 |                     end_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^ help: try ignoring the field: `end_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `known_splices`
[INFO] [stdout]     --> src/main.rs:1202:21
[INFO] [stdout]      |
[INFO] [stdout] 1202 |                     known_splices,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^ help: try ignoring the field: `known_splices: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin`
[INFO] [stdout]     --> src/main.rs:1453:42
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                          ^^^^^ help: try ignoring the field: `begin: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]     --> src/main.rs:1453:49
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                                 ^^^ help: try ignoring the field: `end: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `anchor`
[INFO] [stdout]     --> src/main.rs:1031:39
[INFO] [stdout]      |
[INFO] [stdout] 1031 |     fn find_mutable<'a>(&'a mut self, anchor: TextOrParagraphAnchor) -> DocumentStateMutIter<'a> {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_anchor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin_anchor`
[INFO] [stdout]     --> src/main.rs:1200:21
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                     begin_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^^^ help: try ignoring the field: `begin_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_anchor`
[INFO] [stdout]     --> src/main.rs:1201:21
[INFO] [stdout]      |
[INFO] [stdout] 1201 |                     end_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^ help: try ignoring the field: `end_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `known_splices`
[INFO] [stdout]     --> src/main.rs:1202:21
[INFO] [stdout]      |
[INFO] [stdout] 1202 |                     known_splices,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^ help: try ignoring the field: `known_splices: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin`
[INFO] [stdout]     --> src/main.rs:1453:42
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                          ^^^^^ help: try ignoring the field: `begin: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]     --> src/main.rs:1453:49
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                                 ^^^ help: try ignoring the field: `end: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UnformattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct UnformattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct FormattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TextFormat` is never used
[INFO] [stdout]   --> src/main.rs:46:6
[INFO] [stdout]    |
[INFO] [stdout] 46 | enum TextFormat {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/main.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct TextFormatChange {
[INFO] [stdout]    |        ---------------- field in this struct
[INFO] [stdout] 53 |     values_to_set: u32,
[INFO] [stdout] 54 |     value: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextFormatChange` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BeforeAnchor` and `AfterAnchor` are never constructed
[INFO] [stdout]    --> src/main.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | enum ParagraphInsertPosition {
[INFO] [stdout]     |      ----------------------- variants in this enum
[INFO] [stdout] 106 |     BeforeAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 107 |     EraseAnchorIfEmpty,
[INFO] [stdout] 108 |     AfterAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParagraphInsertPosition` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange`, `ParagraphStyleChange`, `Erase`, `SpliceInsert`, `SpliceParagraphInsert`, and `UndoRedo` are never constructed
[INFO] [stdout]    --> src/main.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | enum Action {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 145 |     FormatChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     ParagraphStyleChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Erase {
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     SpliceInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     SpliceParagraphInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     UndoRedo {
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange` and `Tombstone` are never constructed
[INFO] [stdout]    --> src/main.rs:218:5
[INFO] [stdout]     |
[INFO] [stdout] 217 | enum TextNode {
[INFO] [stdout]     |      -------- variants in this enum
[INFO] [stdout] 218 |     FormatChange(TextFormatChange),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     Tombstone {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `paragraph_id` is never used
[INFO] [stdout]    --> src/main.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 456 | impl ParagraphNode {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 457 |     fn paragraph_id(&self) -> &ParagraphId {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_text` is never used
[INFO] [stdout]    --> src/main.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | impl RenderedFormattedText {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] 486 |     fn to_text(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `document_state` and `text_node_index` are never read
[INFO] [stdout]    --> src/main.rs:671:5
[INFO] [stdout]     |
[INFO] [stdout] 670 | struct DocumentStateMutIter<'a> {
[INFO] [stdout]     |        -------------------- fields in this struct
[INFO] [stdout] 671 |     document_state: &'a mut DocumentState,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 672 |     paragraph_index: usize,
[INFO] [stdout] 673 |     text_node_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DocumentStateMutIter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MutParagraphOrTextNode` is never used
[INFO] [stdout]    --> src/main.rs:677:6
[INFO] [stdout]     |
[INFO] [stdout] 677 | enum MutParagraphOrTextNode<'a> {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current`, `insert_into_paragraph_at`, `insert_into_current_text_node_at_offset`, `next_paragraph`, `next`, and `erase_current` are never used
[INFO] [stdout]    --> src/main.rs:683:8
[INFO] [stdout]     |
[INFO] [stdout] 682 | impl<'a> DocumentStateMutIter<'a> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     fn insert_into_paragraph_at(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 718 |     fn insert_into_current_text_node_at_offset(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 752 |     fn next_paragraph(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 757 |     fn next(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 776 |     fn erase_current(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ParagraphBreak` is never constructed
[INFO] [stdout]     --> src/main.rs:1347:5
[INFO] [stdout]      |
[INFO] [stdout] 1345 | enum Input {
[INFO] [stdout]      |      ----- variant in this enum
[INFO] [stdout] 1346 |     Text(String),
[INFO] [stdout] 1347 |     ParagraphBreak, // basically pressing ENTER
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Range` is never constructed
[INFO] [stdout]     --> src/main.rs:1354:5
[INFO] [stdout]      |
[INFO] [stdout] 1351 | enum ClientSelection {
[INFO] [stdout]      |      --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1354 |     Range {
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ClientSelection` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:561:16
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^            ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/main.rs:590:20
[INFO] [stdout]     |
[INFO] [stdout] 590 |                 if *text_node_index - 1 >= 0 {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:683:16
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:809:17
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter {
[INFO] [stdout]     |                 ^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter<'_> {
[INFO] [stdout]     |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:817:13
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter {
[INFO] [stdout]     |             ^^^^^     ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter<'_> {
[INFO] [stdout]     |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UnformattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct UnformattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct FormattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TextFormat` is never used
[INFO] [stdout]   --> src/main.rs:46:6
[INFO] [stdout]    |
[INFO] [stdout] 46 | enum TextFormat {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/main.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct TextFormatChange {
[INFO] [stdout]    |        ---------------- field in this struct
[INFO] [stdout] 53 |     values_to_set: u32,
[INFO] [stdout] 54 |     value: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextFormatChange` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BeforeAnchor` and `AfterAnchor` are never constructed
[INFO] [stdout]    --> src/main.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | enum ParagraphInsertPosition {
[INFO] [stdout]     |      ----------------------- variants in this enum
[INFO] [stdout] 106 |     BeforeAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 107 |     EraseAnchorIfEmpty,
[INFO] [stdout] 108 |     AfterAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParagraphInsertPosition` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange`, `ParagraphStyleChange`, `Erase`, `SpliceInsert`, `SpliceParagraphInsert`, and `UndoRedo` are never constructed
[INFO] [stdout]    --> src/main.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | enum Action {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 145 |     FormatChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     ParagraphStyleChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Erase {
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     SpliceInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     SpliceParagraphInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     UndoRedo {
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange` and `Tombstone` are never constructed
[INFO] [stdout]    --> src/main.rs:218:5
[INFO] [stdout]     |
[INFO] [stdout] 217 | enum TextNode {
[INFO] [stdout]     |      -------- variants in this enum
[INFO] [stdout] 218 |     FormatChange(TextFormatChange),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     Tombstone {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `paragraph_id` is never used
[INFO] [stdout]    --> src/main.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 456 | impl ParagraphNode {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 457 |     fn paragraph_id(&self) -> &ParagraphId {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_text` is never used
[INFO] [stdout]    --> src/main.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | impl RenderedFormattedText {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] 486 |     fn to_text(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `document_state` and `text_node_index` are never read
[INFO] [stdout]    --> src/main.rs:671:5
[INFO] [stdout]     |
[INFO] [stdout] 670 | struct DocumentStateMutIter<'a> {
[INFO] [stdout]     |        -------------------- fields in this struct
[INFO] [stdout] 671 |     document_state: &'a mut DocumentState,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 672 |     paragraph_index: usize,
[INFO] [stdout] 673 |     text_node_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DocumentStateMutIter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MutParagraphOrTextNode` is never used
[INFO] [stdout]    --> src/main.rs:677:6
[INFO] [stdout]     |
[INFO] [stdout] 677 | enum MutParagraphOrTextNode<'a> {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current`, `insert_into_paragraph_at`, `insert_into_current_text_node_at_offset`, `next_paragraph`, `next`, and `erase_current` are never used
[INFO] [stdout]    --> src/main.rs:683:8
[INFO] [stdout]     |
[INFO] [stdout] 682 | impl<'a> DocumentStateMutIter<'a> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     fn insert_into_paragraph_at(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 718 |     fn insert_into_current_text_node_at_offset(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 752 |     fn next_paragraph(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 757 |     fn next(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 776 |     fn erase_current(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ParagraphBreak` is never constructed
[INFO] [stdout]     --> src/main.rs:1347:5
[INFO] [stdout]      |
[INFO] [stdout] 1345 | enum Input {
[INFO] [stdout]      |      ----- variant in this enum
[INFO] [stdout] 1346 |     Text(String),
[INFO] [stdout] 1347 |     ParagraphBreak, // basically pressing ENTER
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Range` is never constructed
[INFO] [stdout]     --> src/main.rs:1354:5
[INFO] [stdout]      |
[INFO] [stdout] 1351 | enum ClientSelection {
[INFO] [stdout]      |      --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1354 |     Range {
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ClientSelection` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:561:16
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^            ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/main.rs:590:20
[INFO] [stdout]     |
[INFO] [stdout] 590 |                 if *text_node_index - 1 >= 0 {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:683:16
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:809:17
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter {
[INFO] [stdout]     |                 ^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter<'_> {
[INFO] [stdout]     |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.94s
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:817:13
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter {
[INFO] [stdout]     |             ^^^^^     ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter<'_> {
[INFO] [stdout]     |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2018 edition to 2021
[INFO] [stderr]     Checking crdt_splice v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/main.rs from 2021 edition to 2024
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.41s
[INFO] [stderr] crater-edition-check: crdt_splice v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking crdt_splice v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `self_offset_after`
[INFO] [stdout]    --> src/main.rs:276:33
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     if let Some(self_offset_after) = self_offset_after {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_self_offset_after`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut result = vec![TextNode::Text {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/main.rs:411:21
[INFO] [stdout]     |
[INFO] [stdout] 411 |                     node,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `node: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/main.rs:412:21
[INFO] [stdout]     |
[INFO] [stdout] 412 |                     offset,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `offset: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset_after`
[INFO] [stdout]    --> src/main.rs:413:21
[INFO] [stdout]     |
[INFO] [stdout] 413 |                     offset_after,
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: try ignoring the field: `offset_after: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text`
[INFO] [stdout]    --> src/main.rs:414:21
[INFO] [stdout]     |
[INFO] [stdout] 414 |                     text,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `text: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_nodes_len`
[INFO] [stdout]    --> src/main.rs:588:17
[INFO] [stdout]     |
[INFO] [stdout] 588 |             let text_nodes_len = p.contents().len();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_nodes_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `anchor`
[INFO] [stdout]     --> src/main.rs:1031:39
[INFO] [stdout]      |
[INFO] [stdout] 1031 |     fn find_mutable<'a>(&'a mut self, anchor: TextOrParagraphAnchor) -> DocumentStateMutIter<'a> {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_anchor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin_anchor`
[INFO] [stdout]     --> src/main.rs:1200:21
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                     begin_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^^^ help: try ignoring the field: `begin_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_anchor`
[INFO] [stdout]     --> src/main.rs:1201:21
[INFO] [stdout]      |
[INFO] [stdout] 1201 |                     end_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^ help: try ignoring the field: `end_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `known_splices`
[INFO] [stdout]     --> src/main.rs:1202:21
[INFO] [stdout]      |
[INFO] [stdout] 1202 |                     known_splices,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^ help: try ignoring the field: `known_splices: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin`
[INFO] [stdout]     --> src/main.rs:1453:42
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                          ^^^^^ help: try ignoring the field: `begin: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]     --> src/main.rs:1453:49
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                                 ^^^ help: try ignoring the field: `end: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UnformattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct UnformattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct FormattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TextFormat` is never used
[INFO] [stdout]   --> src/main.rs:46:6
[INFO] [stdout]    |
[INFO] [stdout] 46 | enum TextFormat {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/main.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct TextFormatChange {
[INFO] [stdout]    |        ---------------- field in this struct
[INFO] [stdout] 53 |     values_to_set: u32,
[INFO] [stdout] 54 |     value: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextFormatChange` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BeforeAnchor` and `AfterAnchor` are never constructed
[INFO] [stdout]    --> src/main.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | enum ParagraphInsertPosition {
[INFO] [stdout]     |      ----------------------- variants in this enum
[INFO] [stdout] 106 |     BeforeAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 107 |     EraseAnchorIfEmpty,
[INFO] [stdout] 108 |     AfterAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParagraphInsertPosition` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange`, `ParagraphStyleChange`, `Erase`, `SpliceInsert`, `SpliceParagraphInsert`, and `UndoRedo` are never constructed
[INFO] [stdout]    --> src/main.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | enum Action {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 145 |     FormatChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     ParagraphStyleChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Erase {
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     SpliceInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     SpliceParagraphInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     UndoRedo {
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange` and `Tombstone` are never constructed
[INFO] [stdout]    --> src/main.rs:218:5
[INFO] [stdout]     |
[INFO] [stdout] 217 | enum TextNode {
[INFO] [stdout]     |      -------- variants in this enum
[INFO] [stdout] 218 |     FormatChange(TextFormatChange),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     Tombstone {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `paragraph_id` is never used
[INFO] [stdout]    --> src/main.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 456 | impl ParagraphNode {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 457 |     fn paragraph_id(&self) -> &ParagraphId {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_text` is never used
[INFO] [stdout]    --> src/main.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | impl RenderedFormattedText {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] 486 |     fn to_text(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `document_state` and `text_node_index` are never read
[INFO] [stdout]    --> src/main.rs:671:5
[INFO] [stdout]     |
[INFO] [stdout] 670 | struct DocumentStateMutIter<'a> {
[INFO] [stdout]     |        -------------------- fields in this struct
[INFO] [stdout] 671 |     document_state: &'a mut DocumentState,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 672 |     paragraph_index: usize,
[INFO] [stdout] 673 |     text_node_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DocumentStateMutIter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MutParagraphOrTextNode` is never used
[INFO] [stdout]    --> src/main.rs:677:6
[INFO] [stdout]     |
[INFO] [stdout] 677 | enum MutParagraphOrTextNode<'a> {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current`, `insert_into_paragraph_at`, `insert_into_current_text_node_at_offset`, `next_paragraph`, `next`, and `erase_current` are never used
[INFO] [stdout]    --> src/main.rs:683:8
[INFO] [stdout]     |
[INFO] [stdout] 682 | impl<'a> DocumentStateMutIter<'a> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     fn insert_into_paragraph_at(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 718 |     fn insert_into_current_text_node_at_offset(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 752 |     fn next_paragraph(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 757 |     fn next(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 776 |     fn erase_current(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ParagraphBreak` is never constructed
[INFO] [stdout]     --> src/main.rs:1347:5
[INFO] [stdout]      |
[INFO] [stdout] 1345 | enum Input {
[INFO] [stdout]      |      ----- variant in this enum
[INFO] [stdout] 1346 |     Text(String),
[INFO] [stdout] 1347 |     ParagraphBreak, // basically pressing ENTER
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Range` is never constructed
[INFO] [stdout]     --> src/main.rs:1354:5
[INFO] [stdout]      |
[INFO] [stdout] 1351 | enum ClientSelection {
[INFO] [stdout]      |      --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1354 |     Range {
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ClientSelection` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:561:16
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^            ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/main.rs:590:20
[INFO] [stdout]     |
[INFO] [stdout] 590 |                 if *text_node_index - 1 >= 0 {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:683:16
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:809:17
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter {
[INFO] [stdout]     |                 ^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter<'_> {
[INFO] [stdout]     |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:817:13
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter {
[INFO] [stdout]     |             ^^^^^     ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter<'_> {
[INFO] [stdout]     |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `#[macro_use]` import
[INFO] [stdout]  --> src/main.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #[macro_use]
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `self_offset_after`
[INFO] [stdout]    --> src/main.rs:276:33
[INFO] [stdout]     |
[INFO] [stdout] 276 |                     if let Some(self_offset_after) = self_offset_after {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_self_offset_after`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:368:13
[INFO] [stdout]     |
[INFO] [stdout] 368 |         let mut result = vec![TextNode::Text {
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/main.rs:411:21
[INFO] [stdout]     |
[INFO] [stdout] 411 |                     node,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `node: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/main.rs:412:21
[INFO] [stdout]     |
[INFO] [stdout] 412 |                     offset,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `offset: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset_after`
[INFO] [stdout]    --> src/main.rs:413:21
[INFO] [stdout]     |
[INFO] [stdout] 413 |                     offset_after,
[INFO] [stdout]     |                     ^^^^^^^^^^^^ help: try ignoring the field: `offset_after: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text`
[INFO] [stdout]    --> src/main.rs:414:21
[INFO] [stdout]     |
[INFO] [stdout] 414 |                     text,
[INFO] [stdout]     |                     ^^^^ help: try ignoring the field: `text: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text_nodes_len`
[INFO] [stdout]    --> src/main.rs:588:17
[INFO] [stdout]     |
[INFO] [stdout] 588 |             let text_nodes_len = p.contents().len();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_text_nodes_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `anchor`
[INFO] [stdout]     --> src/main.rs:1031:39
[INFO] [stdout]      |
[INFO] [stdout] 1031 |     fn find_mutable<'a>(&'a mut self, anchor: TextOrParagraphAnchor) -> DocumentStateMutIter<'a> {
[INFO] [stdout]      |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_anchor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin_anchor`
[INFO] [stdout]     --> src/main.rs:1200:21
[INFO] [stdout]      |
[INFO] [stdout] 1200 |                     begin_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^^^ help: try ignoring the field: `begin_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_anchor`
[INFO] [stdout]     --> src/main.rs:1201:21
[INFO] [stdout]      |
[INFO] [stdout] 1201 |                     end_anchor,
[INFO] [stdout]      |                     ^^^^^^^^^^ help: try ignoring the field: `end_anchor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `known_splices`
[INFO] [stdout]     --> src/main.rs:1202:21
[INFO] [stdout]      |
[INFO] [stdout] 1202 |                     known_splices,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^ help: try ignoring the field: `known_splices: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin`
[INFO] [stdout]     --> src/main.rs:1453:42
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                          ^^^^^ help: try ignoring the field: `begin: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end`
[INFO] [stdout]     --> src/main.rs:1453:49
[INFO] [stdout]      |
[INFO] [stdout] 1453 |                 ClientSelection::Range { begin, end } => {
[INFO] [stdout]      |                                                 ^^^ help: try ignoring the field: `end: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UnformattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct UnformattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormattedText` is never constructed
[INFO] [stdout]   --> src/main.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | struct FormattedText {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TextFormat` is never used
[INFO] [stdout]   --> src/main.rs:46:6
[INFO] [stdout]    |
[INFO] [stdout] 46 | enum TextFormat {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> src/main.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct TextFormatChange {
[INFO] [stdout]    |        ---------------- field in this struct
[INFO] [stdout] 53 |     values_to_set: u32,
[INFO] [stdout] 54 |     value: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextFormatChange` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BeforeAnchor` and `AfterAnchor` are never constructed
[INFO] [stdout]    --> src/main.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | enum ParagraphInsertPosition {
[INFO] [stdout]     |      ----------------------- variants in this enum
[INFO] [stdout] 106 |     BeforeAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 107 |     EraseAnchorIfEmpty,
[INFO] [stdout] 108 |     AfterAnchor,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ParagraphInsertPosition` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange`, `ParagraphStyleChange`, `Erase`, `SpliceInsert`, `SpliceParagraphInsert`, and `UndoRedo` are never constructed
[INFO] [stdout]    --> src/main.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 115 | enum Action {
[INFO] [stdout]     |      ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 145 |     FormatChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     ParagraphStyleChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     Erase {
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     SpliceInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     SpliceParagraphInsert {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     UndoRedo {
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FormatChange` and `Tombstone` are never constructed
[INFO] [stdout]    --> src/main.rs:218:5
[INFO] [stdout]     |
[INFO] [stdout] 217 | enum TextNode {
[INFO] [stdout]     |      -------- variants in this enum
[INFO] [stdout] 218 |     FormatChange(TextFormatChange),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     Tombstone {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TextNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `paragraph_id` is never used
[INFO] [stdout]    --> src/main.rs:457:8
[INFO] [stdout]     |
[INFO] [stdout] 456 | impl ParagraphNode {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 457 |     fn paragraph_id(&self) -> &ParagraphId {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_text` is never used
[INFO] [stdout]    --> src/main.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 485 | impl RenderedFormattedText {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] 486 |     fn to_text(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `document_state` and `text_node_index` are never read
[INFO] [stdout]    --> src/main.rs:671:5
[INFO] [stdout]     |
[INFO] [stdout] 670 | struct DocumentStateMutIter<'a> {
[INFO] [stdout]     |        -------------------- fields in this struct
[INFO] [stdout] 671 |     document_state: &'a mut DocumentState,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 672 |     paragraph_index: usize,
[INFO] [stdout] 673 |     text_node_index: Option<usize>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DocumentStateMutIter` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MutParagraphOrTextNode` is never used
[INFO] [stdout]    --> src/main.rs:677:6
[INFO] [stdout]     |
[INFO] [stdout] 677 | enum MutParagraphOrTextNode<'a> {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current`, `insert_into_paragraph_at`, `insert_into_current_text_node_at_offset`, `next_paragraph`, `next`, and `erase_current` are never used
[INFO] [stdout]    --> src/main.rs:683:8
[INFO] [stdout]     |
[INFO] [stdout] 682 | impl<'a> DocumentStateMutIter<'a> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 696 |     fn insert_into_paragraph_at(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 718 |     fn insert_into_current_text_node_at_offset(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 752 |     fn next_paragraph(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 757 |     fn next(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 776 |     fn erase_current(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ParagraphBreak` is never constructed
[INFO] [stdout]     --> src/main.rs:1347:5
[INFO] [stdout]      |
[INFO] [stdout] 1345 | enum Input {
[INFO] [stdout]      |      ----- variant in this enum
[INFO] [stdout] 1346 |     Text(String),
[INFO] [stdout] 1347 |     ParagraphBreak, // basically pressing ENTER
[INFO] [stdout]      |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Range` is never constructed
[INFO] [stdout]     --> src/main.rs:1354:5
[INFO] [stdout]      |
[INFO] [stdout] 1351 | enum ClientSelection {
[INFO] [stdout]      |      --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1354 |     Range {
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ClientSelection` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:561:16
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^            ^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 561 |     fn current(&self) -> Option<ParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/main.rs:590:20
[INFO] [stdout]     |
[INFO] [stdout] 590 |                 if *text_node_index - 1 >= 0 {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:683:16
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode> {
[INFO] [stdout]     |                ^^^^^^^^^            ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 683 |     fn current(&mut self) -> Option<MutParagraphOrTextNode<'_>> {
[INFO] [stdout]     |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:809:17
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter {
[INFO] [stdout]     |                 ^^^^^^^^^     ^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 809 |     fn mut_iter(&mut self) -> DocumentStateMutIter<'_> {
[INFO] [stdout]     |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/main.rs:817:13
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter {
[INFO] [stdout]     |             ^^^^^     ^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |             |
[INFO] [stdout]     |             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 817 |     fn iter(&self) -> DocumentStateIter<'_> {
[INFO] [stdout]     |                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.81s
[INFO] [stderr] crater-edition-check all packages now at latest edition
[INFO] [stderr] crater-edition-check: all finished
[INFO] running `Command { std: "docker" "inspect" "a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3", kill_on_drop: false }`
[INFO] [stdout] a3a81038687f7624d8504c689edc0f59264505566f361805256bd4dd9a6070b3
